str(TotalData)
'data.frame': 1725905 obs. of 26 variables:
$ Date : chr "20191118" "20191118" "20191118" "20191118" ...
$ File.name : chr "20191118_view1_" "20191118_view1_" "20191118_view1_" "20191118_view1_" ...
$ X : num 0.319 NaN 0.318 NaN 0.343 ...
$ Y : num NaN NaN NaN NaN 0.0999 ...
$ Z : num NaN -0.0573 NaN -0.0567 -0.055 ...
$ Track : int 1 1 1 1 1 1 1 1 1 1 ...
$ View : chr "1_" "1_" "1_" "1_" ...
$ D_V_T : Factor w/ 153 levels "20191118_1__1",..: 1 1 1 1 1 1 1 1 1 1 ...
$ D_V : Factor w/ 35 levels "20191118_1_",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Flow.rate : Factor w/ 5 levels "0","0.6","3",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Chlorophyll : Factor w/ 7 levels "0","4.3","4.6",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Guano : chr "Absent" "Absent" "Absent" "Absent" ...
$ Light : chr "Present" "Present" "Present" "Present" ...
$ dx : num NaN NaN NaN NaN -0.00115 ...
$ dy : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ dz : num NaN NaN NaN 0.00168 NaN ...
$ d : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ vx : num NaN NaN NaN NaN -0.0345 ...
$ vy : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ vz : num NaN NaN NaN 0.0503 NaN ...
$ v : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ heading : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ pitch : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ turn.anglexy: num NaN NaN NaN NaN 1.29 ...
$ turn.angleyz: num NaN NaN NaN NaN 2.07 ...
$ turn.angle : num NA NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
TotalData$Flow.rate <- as.character(TotalData$Flow.rate)
TotalData$Flow.rate <- as.numeric(TotalData$Flow.rate)
head(TotalData) ## all TotalData rows
str(TotalData)
'data.frame': 1725905 obs. of 26 variables:
$ Date : chr "20191118" "20191118" "20191118" "20191118" ...
$ File.name : chr "20191118_view1_" "20191118_view1_" "20191118_view1_" "20191118_view1_" ...
$ X : num 0.319 NaN 0.318 NaN 0.343 ...
$ Y : num NaN NaN NaN NaN 0.0999 ...
$ Z : num NaN -0.0573 NaN -0.0567 -0.055 ...
$ Track : int 1 1 1 1 1 1 1 1 1 1 ...
$ View : chr "1_" "1_" "1_" "1_" ...
$ D_V_T : Factor w/ 153 levels "20191118_1__1",..: 1 1 1 1 1 1 1 1 1 1 ...
$ D_V : Factor w/ 35 levels "20191118_1_",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Flow.rate : num 0 0 0 0 0 0 0 0 0 0 ...
$ Chlorophyll : Factor w/ 7 levels "0","4.3","4.6",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Guano : chr "Absent" "Absent" "Absent" "Absent" ...
$ Light : chr "Present" "Present" "Present" "Present" ...
$ dx : num NaN NaN NaN NaN -0.00115 ...
$ dy : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ dz : num NaN NaN NaN 0.00168 NaN ...
$ d : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ vx : num NaN NaN NaN NaN -0.0345 ...
$ vy : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ vz : num NaN NaN NaN 0.0503 NaN ...
$ v : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ heading : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ pitch : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
$ turn.anglexy: num NaN NaN NaN NaN 1.29 ...
$ turn.angleyz: num NaN NaN NaN NaN 2.07 ...
$ turn.angle : num NA NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
TotalData$vel.flow <- TotalData$Flow.rate+TotalData$vy
TotalData$Flow.rate <- as.factor(TotalData$Flow.rate)
##remake complete cases dataframe with vel.flow included
CC.TotalData <- na.omit(TotalData)
head(CC.TotalData) ##only complete cases of TotalData
str(CC.TotalData)
'data.frame': 1112228 obs. of 27 variables:
$ Date : chr "20191118" "20191118" "20191118" "20191118" ...
$ File.name : chr "20191118_view1_" "20191118_view1_" "20191118_view1_" "20191118_view1_" ...
$ X : num 0.327 0.163 0.18 0.167 0.158 ...
$ Y : num 0.0717 0.0405 0.0373 0.0891 0.113 ...
$ Z : num -0.0595 -0.0774 -0.0835 -0.1104 -0.0953 ...
$ Track : int 1 1 1 1 1 1 1 1 1 1 ...
$ View : chr "1_" "1_" "1_" "1_" ...
$ D_V_T : Factor w/ 153 levels "20191118_1__1",..: 1 1 1 1 1 1 1 1 1 1 ...
$ D_V : Factor w/ 35 levels "20191118_1_",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Flow.rate : Factor w/ 5 levels "0","0.6","3",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Chlorophyll : Factor w/ 7 levels "0","4.3","4.6",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Guano : chr "Absent" "Absent" "Absent" "Absent" ...
$ Light : chr "Present" "Present" "Present" "Present" ...
$ dx : num -0.00115 0.00283 0.00282 0 -0.00289 ...
$ dy : num -0.00196 -0.00183 0.00505 0.00511 0.00535 ...
$ dz : num -0.00112 0.00056 -0.00112 0.00112 0.00168 ...
$ d : num 0.00253 0.00342 0.00589 0.00523 0.00631 ...
$ vx : num -0.0345 0.0849 0.0846 0 -0.0867 ...
$ vy : num -0.0587 -0.0548 0.1514 0.1533 0.1605 ...
$ vz : num -0.0335 0.0168 -0.0335 0.0336 0.0503 ...
$ v : num 0.0759 0.1025 0.1767 0.157 0.1892 ...
$ heading : num 0.531 -0.997 0.509 0 -0.495 ...
$ pitch : num -0.458 0.165 -0.191 0.216 0.269 ...
$ turn.anglexy: num 1.36 1.33 1.37 1.08 0.95 ...
$ turn.angleyz: num 2.26 2.66 2.72 2.46 2.27 ...
$ turn.angle : num 12.1 31.1 59.3 26.6 16.7 ...
$ vel.flow : num -0.0587 -0.0548 0.1514 0.1533 0.1605 ...
- attr(*, "na.action")= 'omit' Named int [1:613677] 1 2 3 4 5 6 7 8 9 10 ...
..- attr(*, "names")= chr [1:613677] "65" "67" "70" "71" ...
```r
plot(CC.TotalData$Chlorophyll, log10(CC.TotalData$vel.flow), xlab = \Chlorophyll (mg/L)\, ylab = \Velocity in relation to flow (Log^10
Warning in is.factor(y) : NaNs produced
Warning in bplt(at[i], wid = width[i], stats = z$stats[, i], out = z$out[z$group == :
Outlier (-Inf) in boxplot 1 is not drawn
Warning in bplt(at[i], wid = width[i], stats = z$stats[, i], out = z$out[z$group == :
Outlier (-Inf) in boxplot 5 is not drawn
Warning in bplt(at[i], wid = width[i], stats = z$stats[, i], out = z$out[z$group == :
Outlier (-Inf) in boxplot 7 is not drawn

```r
plot(CC.TotalData$Flow.rate, log10(CC.TotalData$vel.flow), xlab = \Flow Rate (cm/s)\, ylab = \Velocity in relation to flow (Log^10
Warning in is.factor(y) : NaNs produced
Warning in bplt(at[i], wid = width[i], stats = z$stats[, i], out = z$out[z$group == :
Outlier (-Inf) in boxplot 1 is not drawn

```r
plot(CC.TotalData$Guano, log10(CC.TotalData$vel.flow), xlab = \Guano\, ylab = \Velocity in relation to flow (Log^10
Warning in is.factor(y) : NaNs produced
Warning in bplt(at[i], wid = width[i], stats = z$stats[, i], out = z$out[z$group == :
Outlier (-Inf) in boxplot 1 is not drawn
Warning in bplt(at[i], wid = width[i], stats = z$stats[, i], out = z$out[z$group == :
Outlier (-Inf) in boxplot 2 is not drawn

```r
plot(CC.TotalData$Light, log10(CC.TotalData$vel.flow), xlab = \Light\, ylab = \Velocity in relation to flow (Log^10
Warning in is.factor(y) : NaNs produced
Warning in bplt(at[i], wid = width[i], stats = z$stats[, i], out = z$out[z$group == :
Outlier (-Inf) in boxplot 1 is not drawn
Warning in bplt(at[i], wid = width[i], stats = z$stats[, i], out = z$out[z$group == :
Outlier (-Inf) in boxplot 2 is not drawn

save.image("~/Post-doc/Data/Total Merged Data File (April 5 2022).RData")
LS0tDQp0aXRsZTogIlZlbG9jaXR5IGluIHJlbGF0aW9uIHRvIGZsb3ciDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCmBgYHtyfQ0Kcm0obGlzdD1scyhhbGw9VFJVRSkpDQpsb2FkKCJDOlxcVXNlcnNcXE5pY29sZSBIZWxsZXNzZXlcXERvY3VtZW50c1xcUG9zdC1kb2NcXERhdGFcXFRvdGFsIE1lcmdlZCBEYXRhIEZpbGUgKEFwcmlsIDUgMjAyMikuUmRhdGEiKQ0KDQoNCiMjIEZsb3cgaGFwcGVucyBpbiB0aGUgWSBkaXJlY3Rpb24NCg0KIyMgU28sIGZsb3cgKyB2eSA9IHZlbC5mbG93ICh2ZWxvY2l0eSBpbiByZWxhdGlvbiB0byBmbG93KQ0KDQoNCiMjIE5lZWQgdG8gbWFrZSBmbG93IHJhdGUgbnVtZXJpYyBmaXJzdA0Kc3RyKFRvdGFsRGF0YSkNClRvdGFsRGF0YSRGbG93LnJhdGUgPC0gYXMuY2hhcmFjdGVyKFRvdGFsRGF0YSRGbG93LnJhdGUpDQpUb3RhbERhdGEkRmxvdy5yYXRlIDwtIGFzLm51bWVyaWMoVG90YWxEYXRhJEZsb3cucmF0ZSkNCg0KaGVhZChUb3RhbERhdGEpICMjIGFsbCBUb3RhbERhdGEgcm93cw0Kc3RyKFRvdGFsRGF0YSkNClRvdGFsRGF0YSR2ZWwuZmxvdyA8LSBUb3RhbERhdGEkRmxvdy5yYXRlK1RvdGFsRGF0YSR2eQ0KVG90YWxEYXRhJEZsb3cucmF0ZSA8LSBhcy5mYWN0b3IoVG90YWxEYXRhJEZsb3cucmF0ZSkNCg0KDQojI3JlbWFrZSBjb21wbGV0ZSBjYXNlcyBkYXRhZnJhbWUgd2l0aCB2ZWwuZmxvdyBpbmNsdWRlZA0KQ0MuVG90YWxEYXRhIDwtIG5hLm9taXQoVG90YWxEYXRhKQ0KaGVhZChDQy5Ub3RhbERhdGEpICMjb25seSBjb21wbGV0ZSBjYXNlcyBvZiBUb3RhbERhdGEgDQpzdHIoQ0MuVG90YWxEYXRhKQ0KDQoNCiMjIEJhc2ljIHBsb3Qgb2YgdnkgdnMgRmxvdyBSYXRlDQpwbG90KENDLlRvdGFsRGF0YSRGbG93LnJhdGUsIENDLlRvdGFsRGF0YSR2eSwgeGxhYiA9ICJGbG93IFJhdGUgKGNtL3MpIiwgeWxhYiA9ICJWZWxvY2l0eSBpbiBZIGRpcmVjdGlvbiAodnksIGNtL3MpIikNCg0KIyMgQmFzaWMgcGxvdCBvZiB2ZWwuZmxvdyB2cyBGbG93IFJhdGUgKHNob3VsZCBiZSBkaWZmZXJlbnQgdG8gYWJvdmUpDQpwbG90KENDLlRvdGFsRGF0YSRGbG93LnJhdGUsIENDLlRvdGFsRGF0YSR2ZWwuZmxvdywgeGxhYiA9ICJGbG93IFJhdGUgKGNtL3MpIiwgeWxhYiA9ICJWZWxvY2l0eSBpbiBZIGRpcmVjdGlvbiBtaW51cyBmbG93ICh2ZWwuZmxvdywgY20vcykiKQ0KDQoNCiMjIFBsb3R0aW5nIHR1cm4gYW5nbGVzIGluIHJlbGF0aW9uIHRvIHN3aW0gdmVsb2NpdHkgKGFjY291bnRpbmcgZm9yIGZsb3cgcmF0ZSkgZm9yIGV2ZXJ5IGluZGl2aWR1YWwNCmZvciAoaSBpbiAxOmxlbmd0aChpbmQpKXsNCmpwZWcoZmlsZW5hbWU9cGFzdGUoaW5kW2ldLCAnLmpwZWcnLCBzZXAgPSAnJyksIHdpZHRoID0gNDgwLCBoZWlnaHQgPSA0ODApDQpwbG90KENDLlRvdGFsRGF0YSR0dXJuLmFuZ2xlW0NDLlRvdGFsRGF0YSREX1ZfVD09aW5kW2ldXSwgQ0MuVG90YWxEYXRhJHZlbC5mbG93W0NDLlRvdGFsRGF0YSREX1ZfVD09aW5kW2ldXSwNCiAgICAgICAgICAgIHhsYWIgPSAiVHVybiBBbmdsZXMiLA0KICAgICB5bGFiID0gIlZlbG9jaXR5IGluIHJlbGF0aW9uIHRvIGZsb3cgKGNtL3MpIiwNCiAgICAgICAgICBtYWluID0gaW5kW2ldKSANCmRldi5vZmYoKQ0KfQ0KDQpsaWJyYXJ5KGdncGxvdDIpDQoNCiMjIHBsb3QgRmxvdyBSYXRlIGJ5IFZlbC5mbG93IGZpbGxlZCBieSBDaGxhIGZhY2V0ZWQgYnkgbGlnaHQNCmdncGxvdChDQy5Ub3RhbERhdGEsYWVzKHg9Rmxvdy5yYXRlLCB5PWxvZzEwKHZlbC5mbG93KSwgZmlsbD1DaGxvcm9waHlsbCkpKw0KICBnZW9tX2JveHBsb3Qobm90Y2g9Riwgbm90Y2h3aWR0aD0wLjMsb3V0bGllci5zaGFwZT0xLG91dGxpZXIuc2l6ZT0yLCBjb2VmPTEuNSkrDQogIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIikpKw0KICB0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTAsaGp1c3Q9MSx2anVzdD0wLjQpKSsNCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vcj1lbGVtZW50X2JsYW5rKCkpKw0KICBsYWJzKHNpemU9ICIiLHggPSAiRmxvdyBSYXRlIChjbS9zKSIsIHkgPSAiVmVsb2NpdHkgaW4gcmVsYXRpb24gdG8gZmxvdyAoTG9nIHRyYW5zZm9ybWVkKShjbS9zKSIsIHRpdGxlID0gIkxpZ2h0IikgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZ3JlZW55ZWxsb3ciLCAieWVsbG93Z3JlZW4iLCJsaWdodGdyZWVuIiwgImdyZWVuIiwgImdyZWVuMyIsICJncmVlbjQiLCAiZGFya2dyZWVuIiksbmFtZSA9ICJDaGxvcm9waHlsbCAobWcvTCkiLA0KICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiMCIsICI0LjMiLCAiNC42IiwgIjYuMSIsICI3LjYiLCAiMTMuNSIsICIxOSIpKSsNCiAgZmFjZXRfZ3JpZCh+TGlnaHQsIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlIikNCg0KIyMgcGxvdCBDaGxvcm9waHlsbCBieSB2ZWwuZmxvdyBmaWxsZWQgYnkgZmxvdyByYXRlIGZhY2V0ZWQgYnkgbGlnaHQNCmdncGxvdChDQy5Ub3RhbERhdGEsYWVzKHg9Q2hsb3JvcGh5bGwsIHk9dmVsLmZsb3csIGZpbGw9Rmxvdy5yYXRlKSkrDQogIGdlb21fYm94cGxvdChub3RjaD1GLCBub3RjaHdpZHRoPTAuMyxvdXRsaWVyLnNoYXBlPTEsb3V0bGllci5zaXplPTIsIGNvZWY9MS41KSsNCiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChjb2xvcj0iYmxhY2siKSkrDQogIHRoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCxoanVzdD0xLHZqdXN0PTAuNCkpKw0KICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yPWVsZW1lbnRfYmxhbmsoKSkrDQogIGxhYnMoc2l6ZT0gIiIseCA9ICJDaGxvcm9waHlsbCAobWcvTCkiLCB5ID0gIlZlbG9jaXR5IGluIHJlbGF0aW9uIHRvIGZsb3cgKGNtL3MpIiwgdGl0bGUgPSAiTGlnaHQiKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJ3aGl0ZSIsICJiZWlnZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLCBuYW1lID0gIkZsb3cgUmF0ZSAoY20vcykiLA0KICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiMCIsICIwLjYiLCAiMyIsICI1LjkiLCAiOCIpKSsNCiAgZmFjZXRfZ3JpZCh+TGlnaHQsIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlIikNCg0KIyMgcGxvdCBDaGxvcm9waHlsbCBieSB0dXJuIGFuZ2xlIGZpbGxlZCBieSBmbG93IHJhdGUgZmFjdGVkIGJ5IGxpZ2h0DQpnZ3Bsb3QoQ0MuVG90YWxEYXRhLGFlcyh4PUNobG9yb3BoeWxsLCB5PXR1cm4uYW5nbGUsIGZpbGw9Rmxvdy5yYXRlKSkrDQogIGdlb21fYm94cGxvdChub3RjaD1GLCBub3RjaHdpZHRoPTAuMyxvdXRsaWVyLnNoYXBlPTEsb3V0bGllci5zaXplPTIsIGNvZWY9MS41KSsNCiAgdGhlbWUoYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChjb2xvcj0iYmxhY2siKSkrDQogIHRoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfdGV4dChhbmdsZT05MCxoanVzdD0xLHZqdXN0PTAuNCkpKw0KICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yPWVsZW1lbnRfYmxhbmsoKSkrDQogIGxhYnMoc2l6ZT0gIiIseCA9ICJDaGxvcm9waHlsbCAobWcvTCkiLCB5ID0gIlR1cm4gYW5nbGUgKGRlZ3JlZXMpIiwgdGl0bGUgPSAiTGlnaHQiKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJ3aGl0ZSIsICJiZWlnZSIsICJ5ZWxsb3ciLCAib3JhbmdlIiwgInJlZCIpLCBuYW1lID0gIkZsb3cgUmF0ZSAoY20vcykiLA0KICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiMCIsICIwLjYiLCAiMyIsICI1LjkiLCAiOCIpKSsNCiAgZmFjZXRfZ3JpZCh+TGlnaHQsIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlIikNCg0KIyMgcGxvdCB0dXJuIGFuZ2xlIGJ5IHZlbC5mbG93IGZpbGxlZCBieSBjaGxhLCBmYWNldGVkIGJ5IGZsb3cgcmF0ZQ0KZ2dwbG90KENDLlRvdGFsRGF0YSxhZXMoeD10dXJuLmFuZ2xlLCB5PXZlbC5mbG93KSkrDQogIGdlb21fcG9pbnQoYWVzKGNvbG91cj1DaGxvcm9waHlsbCkpKw0KICBmYWNldF9ncmlkKH5GbG93LnJhdGUsIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlIikrDQogIGxhYnMoc2l6ZT0gIiIseCA9ICJUdXJuIGFuZ2xlIChkZWdyZWVzKSIsIHkgPSAiVmVsb2NpdHkgaW4gcmVsYXRpb24gdG8gZmxvdyAoY20vcykiLCB0aXRsZSA9ICJGbG93IFJhdGUgKGNtL3MpIikrDQogIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIikpKw0KICB0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTAsaGp1c3Q9MSx2anVzdD0wLjQpKSsNCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vcj1lbGVtZW50X2JsYW5rKCkpKw0KICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcz1jKCJncmVlbnllbGxvdyIsICJ5ZWxsb3dncmVlbiIsImxpZ2h0Z3JlZW4iLCAiZ3JlZW4iLCAiZ3JlZW4zIiwgImdyZWVuNCIsICJkYXJrZ3JlZW4iKSxuYW1lID0gIkNobG9yb3BoeWxsIChtZy9MKSIsIGxhYmVscz1jKCIwIiwgIjQuMyIsICI0LjYiLCAiNi4xIiwgIjcuNiIsICIxMy41IiwgIjE5IikpDQogDQpgYGANCg0KDQpgYGB7cn0NCiMjIHh5IHBsb3Qgb2YgbWVhbnMgYW5kIHZhcmlhbmNlIG9mIHN3aW1taW5nIHNwZWVkIGFuZCBjaGxvcm9waHlsbCBhbmQgdHVybiBhbmdsZSwgaGVhZGluZyByZWxhdGl2ZSB0byBmbG93DQojIyBzdGlsbCBuZWVkIHRvIG1ha2UgR3Vhbm8gYW5kIExpZ2h0IGZhY3RvcnMgaW4gdGFiX0FHRyAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQogICAgIyMjIyMjIyMgdmVsb2NpdHkgbWVhbnMgYW5kIFNEICAjIyMjIyMNCnBsb3QodGFiX0FHRyRDaGxvcm9waHlsbCwgdGFiX0FHRyRtZWFuLnZlbG9jaXR5LCB4bGFiID0gIkNobG9yb3BoeWxsIChtZy9MKSIsIHlsYWIgPSAiVmVsb2NpdHkgKEFnZ3JlZ2F0ZSBtZWFuLCBtbS9zKSIpDQpwbG90KHRhYl9BR0ckQ2hsb3JvcGh5bGwsIHRhYl9BR0ckc2QudmVsb2NpdHksIHhsYWIgPSAiQ2hsb3JvcGh5bGwgKG1nL0wpIiwgeWxhYiA9ICJWZWxvY2l0eSAoQWdncmVnYXRlIFNELCBtbS9zKSIpDQpwbG90KHRhYl9BR0ckRmxvdy5SYXRlLCB0YWJfQUdHJG1lYW4udmVsb2NpdHksIHhsYWIgPSAiRmxvdyBSYXRlIChjbS9zKSIsIHlsYWIgPSAiVmVsb2NpdHkgKEFnZ3JlZ2F0ZSBtZWFuLCBtbS9zKSIpDQpwbG90KHRhYl9BR0ckRmxvdy5SYXRlLCB0YWJfQUdHJHNkLnZlbG9jaXR5LCB4bGFiID0gIkZsb3cgUmF0ZSAoY20vcykiLCB5bGFiID0gIlZlbG9jaXR5IChBZ2dyZWdhdGUgU0QsIG1tL3MpIikNCiNwbG90KHRhYl9BR0ckR3Vhbm8sIHRhYl9BR0ckbWVhbi52ZWxvY2l0eSwgeGxhYiA9ICJHdWFubyIsIHlsYWIgPSAiVmVsb2NpdHkgKEFnZ3JlZ2F0ZSBtZWFuLCBtbS9zKSIpICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyBHdWFubyBhbmQgTGlnaHQgc3RpbGwgbm90IGZhY3RvcnMgDQojcGxvdCh0YWJfQUdHJEd1YW5vLCB0YWJfQUdHJHNkLnZlbG9jaXR5LCB4bGFiID0gIkd1YW5vIiwgeWxhYiA9ICJWZWxvY2l0eSAoQWdncmVnYXRlIFNELCBtbS9zKSIpDQojcGxvdCh0YWJfQUdHJExpZ2h0LCB0YWJfQUdHJG1lYW4udmVsb2NpdHksIHhsYWIgPSAiTGlnaHQiLCB5bGFiID0gIlZlbG9jaXR5IChBZ2dyZWdhdGUgbWVhbiwgbW0vcykiKSAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMgR3Vhbm8gYW5kIExpZ2h0IHN0aWxsIG5vdCBmYWN0b3JzIA0KI3Bsb3QodGFiX0FHRyRMaWdodCwgdGFiX0FHRyRzZC52ZWxvY2l0eSwgeGxhYiA9ICJMaWdodCIsIHlsYWIgPSAiVmVsb2NpdHkgKEFnZ3JlZ2F0ZSBTRCwgbW0vcykiKQ0KDQogICAgIyMjIyMjIyMgdHVybiBhbmdsZSBtZWFucyBhbmQgU0QgICMjIyMjIw0KcGxvdCh0YWJfQUdHJENobG9yb3BoeWxsLCB0YWJfQUdHJHR1cm4uYW5nbGUsIHhsYWIgPSAiQ2hsb3JvcGh5bGwgKG1nL0wpIiwgeWxhYiA9ICJUdXJuIEFuZ2xlIChkZWdyZWVzKSIpDQpwbG90KHRhYl9BR0ckRmxvdy5SYXRlLCB0YWJfQUdHJHR1cm4uYW5nbGUsIHhsYWIgPSAiRmxvdyBSYXRlIChjbS9zKSIsIHlsYWIgPSAiVHVybiBBbmdsZSAoZGVncmVlcykiKQ0KI3Bsb3QodGFiX0FHRyRHdWFubywgdGFiX0FHRyR0dXJuLmFuZ2xlLCB4bGFiID0gIkd1YW5vIiwgeWxhYiA9ICJUdXJuIEFuZ2xlIChkZWdyZWVzKSIpICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyBHdWFubyBhbmQgTGlnaHQgc3RpbGwgbm90IGZhY3RvcnMgDQojcGxvdCh0YWJfQUdHJExpZ2h0LCB0YWJfQUdHJHR1cm4uYW5nbGUsIHhsYWIgPSAiTGlnaHQiLCB5bGFiID0gIlR1cm4gQW5nbGUgKGRlZ3JlZXMpIikNCg0KICAgICMjIyMjIyMjIGhlYWRpbmcgbWVhbnMgYW5kIFNEICAjIyMjIyMNCnBsb3QodGFiX0FHRyRDaGxvcm9waHlsbCwgdGFiX0FHRyRoZWFkaW5nLygyKnBpKSozNjAsIHhsYWIgPSAiQ2hsb3JvcGh5bGwgKG1nL0wpIiwgeWxhYiA9ICJIZWFkaW5nIChkZWdyZWVzKSIpDQpwbG90KHRhYl9BR0ckRmxvdy5SYXRlLCB0YWJfQUdHJGhlYWRpbmcvKDIqcGkpKjM2MCwgeGxhYiA9ICJGbG93IFJhdGUgKGNtL3MpIiwgeWxhYiA9ICJIZWFkaW5nIChkZWdyZWVzKSIpDQojcGxvdCh0YWJfQUdHJEd1YW5vLCB0YWJfQUdHJGhlYWRpbmcsIHhsYWIgPSAiR3Vhbm8iLCB5bGFiID0gIkhlYWRpbmcgKGRlZ3JlZXMpIikgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIEd1YW5vIGFuZCBMaWdodCBzdGlsbCBub3QgZmFjdG9ycyANCiNwbG90KHRhYl9BR0ckTGlnaHQsIHRhYl9BR0ckaGVhZGluZywgeGxhYiA9ICJMaWdodCIsIHlsYWIgPSAiSGVhZGluZyAoZGVncmVlcykiKSANCg0KIyMgcGx1cyBtZWFuIG9mIHRvdGFsIHRyYWNrcyBmb3IgdHVybiBhbmdsZSBhbmQgaGVhZGluZywgYW5kIHBhdGh3aXNlIHZlbG9jaXR5DQpzdHIoQ0MuVG90YWxEYXRhKQ0KQ0MuVG90YWxEYXRhJEd1YW5vIDwtIGFzLmZhY3RvcihDQy5Ub3RhbERhdGEkR3Vhbm8pDQpDQy5Ub3RhbERhdGEkTGlnaHQgPC0gYXMuZmFjdG9yKENDLlRvdGFsRGF0YSRMaWdodCkNCg0KIyMgYWdncmVnYXRlIGRpc3RyaWJ1dGlvbiBvZiBhbGwgYW5nbGVzIGFuZCBoZWFkaW5ncywgbm90IGp1c3QgcGF0aHdpc2UNCnBsb3QoQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsLCBsb2cxMChDQy5Ub3RhbERhdGEkdiksIHhsYWIgPSAiQ2hsb3JvcGh5bGwgKG1nL0wpIiwgeWxhYiA9ICJWZWxvY2l0eSAoTG9nXjEwLCBtbS9zKSIpDQpwbG90KENDLlRvdGFsRGF0YSRGbG93LnJhdGUsIGxvZzEwKENDLlRvdGFsRGF0YSR2KSwgeGxhYiA9ICJGbG93IFJhdGUgKGNtL3MpIiwgeWxhYiA9ICJWZWxvY2l0eSAoTG9nXjEwLCBtbS9zKSIpDQpwbG90KENDLlRvdGFsRGF0YSRHdWFubywgbG9nMTAoQ0MuVG90YWxEYXRhJHYpLCB4bGFiID0gIkd1YW5vIiwgeWxhYiA9ICJWZWxvY2l0eSAoTG9nXjEwLCBtbS9zKSIpICAgICAgICAgICANCnBsb3QoQ0MuVG90YWxEYXRhJExpZ2h0LCBsb2cxMChDQy5Ub3RhbERhdGEkdiksIHhsYWIgPSAiTGlnaHQiLCB5bGFiID0gIlZlbG9jaXR5IChMb2deMTAsIG1tL3MpIikgICAgICAgICAgIA0KDQogICAgICMjIyMjIyB2ZWxvY2l0eSBpbiByZWxhdGlvbiB0byBmbG93LCBhZ2dyZWdhdGVzIG9mIHRvdGFsIGRhdGEgICMjIyMjIw0KcGxvdChDQy5Ub3RhbERhdGEkQ2hsb3JvcGh5bGwsIGxvZzEwKENDLlRvdGFsRGF0YSR2ZWwuZmxvdyksIHhsYWIgPSAiQ2hsb3JvcGh5bGwgKG1nL0wpIiwgeWxhYiA9ICJWZWxvY2l0eSAgaW4gcmVsYXRpb24gdG8gZmxvdyAoTG9nXjEwLCBtbS9zKSIpDQpwbG90KENDLlRvdGFsRGF0YSRGbG93LnJhdGUsIGxvZzEwKENDLlRvdGFsRGF0YSR2ZWwuZmxvdyksIHhsYWIgPSAiRmxvdyBSYXRlIChjbS9zKSIsIHlsYWIgPSAiVmVsb2NpdHkgIGluIHJlbGF0aW9uIHRvIGZsb3cgKExvZ14xMCwgbW0vcykiKQ0KcGxvdChDQy5Ub3RhbERhdGEkR3Vhbm8sIGxvZzEwKENDLlRvdGFsRGF0YSR2ZWwuZmxvdyksIHhsYWIgPSAiR3Vhbm8iLCB5bGFiID0gIlZlbG9jaXR5IGluIHJlbGF0aW9uIHRvIGZsb3cgKExvZ14xMCwgbW0vcykiKSAgICAgDQpwbG90KENDLlRvdGFsRGF0YSRMaWdodCwgbG9nMTAoQ0MuVG90YWxEYXRhJHZlbC5mbG93KSwgeGxhYiA9ICJMaWdodCIsIHlsYWIgPSAiVmVsb2NpdHkgaW4gcmVsYXRpb24gdG8gZmxvdyAoTG9nXjEwLCBtbS9zKSIpICANCg0KICAgICMjIyMjIyMjIHR1cm4gYW5nbGUgbWVhbnMgYW5kIFNEICAjIyMjIyMNCnBsb3QoQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsLCBDQy5Ub3RhbERhdGEkdHVybi5hbmdsZSwgeGxhYiA9ICJDaGxvcm9waHlsbCAobWcvTCkiLCB5bGFiID0gIlR1cm4gQW5nbGUgKGRlZ3JlZXMpIikNCnBsb3QoQ0MuVG90YWxEYXRhJEZsb3cucmF0ZSwgQ0MuVG90YWxEYXRhJHR1cm4uYW5nbGUsIHhsYWIgPSAiRmxvdyBSYXRlIChjbS9zKSIsIHlsYWIgPSAiVHVybiBBbmdsZSAoZGVncmVlcykiKQ0KcGxvdChDQy5Ub3RhbERhdGEkR3Vhbm8sIENDLlRvdGFsRGF0YSR0dXJuLmFuZ2xlLCB4bGFiID0gIkd1YW5vIiwgeWxhYiA9ICJUdXJuIEFuZ2xlIChkZWdyZWVzKSIpDQpwbG90KENDLlRvdGFsRGF0YSRMaWdodCwgQ0MuVG90YWxEYXRhJHR1cm4uYW5nbGUsIHhsYWIgPSAiTGlnaHQiLCB5bGFiID0gIlR1cm4gQW5nbGUgKGRlZ3JlZXMpIikNCg0KICAgICMjIyMjIyMjIGhlYWRpbmcgbWVhbnMgYW5kIFNEICAjIyMjIyMNCnBsb3QoQ0MuVG90YWxEYXRhJENobG9yb3BoeWxsLCBDQy5Ub3RhbERhdGEkaGVhZGluZy8oMipwaSkqMzYwLCB4bGFiID0gIkNobG9yb3BoeWxsIChtZy9MKSIsIHlsYWIgPSAiSGVhZGluZyAoZGVncmVlcykiKQ0KcGxvdChDQy5Ub3RhbERhdGEkRmxvdy5yYXRlLCBDQy5Ub3RhbERhdGEkaGVhZGluZy8oMipwaSkqMzYwLCB4bGFiID0gIkZsb3cgUmF0ZSAoY20vcykiLCB5bGFiID0gIkhlYWRpbmcgKGRlZ3JlZXMpIikNCnBsb3QoQ0MuVG90YWxEYXRhJEd1YW5vLCBDQy5Ub3RhbERhdGEkaGVhZGluZy8oMipwaSkqMzYwLCB4bGFiID0gIkd1YW5vIiwgeWxhYiA9ICJIZWFkaW5nIChkZWdyZWVzKSIpICAgICAgICAgDQpwbG90KENDLlRvdGFsRGF0YSRMaWdodCwgQ0MuVG90YWxEYXRhJGhlYWRpbmcvKDIqcGkpKjM2MCwgeGxhYiA9ICJMaWdodCIsIHlsYWIgPSAiSGVhZGluZyAoZGVncmVlcykiKSANCg0KYGBgDQoNCg0KYGBge3J9DQpzYXZlLmltYWdlKCJ+L1Bvc3QtZG9jL0RhdGEvVG90YWwgTWVyZ2VkIERhdGEgRmlsZSAoQXByaWwgNSAyMDIyKS5SRGF0YSIpDQoNCg0KYGBgDQoNCg==